package aplicacao.movel.locais;

import br.usp.fsi.entity.Local;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import aplicacao.movel.ActivityGenerica;
import aplicacao.movel.R;
import aplicacao.movel.R.botao;
import aplicacao.movel.R.id;
import aplicacao.movel.R.layout;
import aplicacao.movel.webservice.SessaoLogada;
import aplicacao.movel.webservice.WebServiceREST;

public class EditaCriaLocalActivity extends ActivityGenerica {

	private EditText nome;
	private EditText endereco;
	private EditText nro;
	private EditText cep;
	private Button okLoc;
	
	Bundle infoEditar;

	protected void editaCriaLocal() {
		setContentView(R.layout.editarcriarlocal);

		nome = (EditText) findViewById(R.id.editNomeLoc);
		endereco = (EditText) findViewById(R.id.editEnderecoLoc);
		nro = (EditText) findViewById(R.id.editNroLoc);
		// FIXME � poss�vel inserir ceps maiores do que o permitido
		cep = (EditText) findViewById(R.id.editCepLoc);
		okLoc = (Button) findViewById(R.botao.ok_editlocal);
		
		infoEditar = getIntent().getExtras();
		
		if(infoEditar != null && infoEditar.get("localAEditar") != null){
			Local localAEditar = (Local)infoEditar.get("localAEditar");
			nome.setText(localAEditar.getNome());
			endereco.setText(localAEditar.getEndereco());
			nro.setText(new Integer(localAEditar.getNumero()).toString());
			cep.setText(localAEditar.getCep());
		}

		okLoc.setOnClickListener(new EditaCriaLocalOnClickListener());
	}

	@Override
	public void onCreate(Bundle icile) {
		super.onCreate(icile);
		editaCriaLocal();
	}
	
	private class EditaCriaLocalOnClickListener implements View.OnClickListener {

		public void onClick(View v) {

			try {	
				if(infoEditar != null && infoEditar.get("localAEditar") != null){
					editarLocal();
				}else{
					inserirLocal();						
				}
			
			} catch (Exception e) {
				e.printStackTrace();
				gerarToast(e.getMessage());
			}

		}

		private void editarLocal() throws Exception {
			Local local = (Local) infoEditar.get("localAEditar");
			carregarObjetoComOsDados(local);
			
			WebServiceREST usuRest = new WebServiceREST();
			if(usuRest.editarUm(local)){
				finish();
				gerarToast("Sucesso!");
			}else{
				//FIXME n�o adianta s� mostrar isso :(
				gerarToast("N�o foi poss�vel editar o local");
			}
		}

		private void inserirLocal() throws Exception {
			Local local = new Local();
			carregarObjetoComOsDados(local);
			
			WebServiceREST usuRest = new WebServiceREST();
			int idLocal = usuRest.inserirUm(local);
			if (idLocal != -1) {
				local.setIdLocal(idLocal);
				finish();
				gerarToast("Sucesso!");
			} else {
				gerarToast("Erro! Nao foi possivel inserir o local");
			}
		}

		private void carregarObjetoComOsDados(Local local) {
			local.setNome(nome.getText().toString());
			local.setEndereco(endereco.getText().toString());
			local.setNumero(Integer.valueOf(nro.getText().toString()));
			local.setCep(cep.getText().toString());
			local.setIdEmpresa(SessaoLogada.sessao.getEmpresa()
					.getIdEmpresa());
		}
	}

}
